package com.ingenieria.industrial.controller;

import com.ingenieria.industrial.dto.Usuario;
import com.ingenieria.industrial.service.implementacion.UsuarioService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class LoginController extends BaseController {

    @RequestMapping(params = "action=nuevo")
    public ModelAndView mostrarLogin(HttpServletRequest request) {
        HttpSession sesion = request.getSession();
        if (sesion.getAttribute("cod_usu") == null) {
            Usuario registro = new Usuario();
            ModelAndView mav = new ModelAndView("login");
            mav.addObject("registro", registro);
            return mav;
        } else {
            ModelAndView mav = new ModelAndView("index");
            return mav;
        }
    }

    @RequestMapping(params = "action=login")
    public ModelAndView loginIn(@ModelAttribute Usuario registro, HttpServletRequest request) {
        UsuarioService service = new UsuarioService();
        Usuario usuario = new Usuario();
        try {
            usuario = service.login(registro.getCod_usu(), registro.getClave());
        } catch (Exception e) {
        }
        if (usuario != null) {
            HttpSession sesion = request.getSession(true);
            sesion.setAttribute("session_id", sesion.getId());
            sesion.setAttribute("cod_usu", usuario.getCod_usu());
            sesion.setAttribute("nombre", usuario.getNombre());
            sesion.setAttribute("descrip_rol", usuario.getDescrip());
            sesion.setAttribute("cod_rol", usuario.getCod_rol());
            ModelAndView mav = new ModelAndView("index");
            mav.addObject("cod_usu", usuario.getCod_usu());
            mav.addObject("cod_rol", usuario.getCod_rol());
            mav.addObject("descrip_rol", usuario.getDescrip());
            mav.addObject("usuario_nombre", usuario.getNombre());
            mav.addObject("sesion_id", sesion.getId());            
            return mav;
        } else {
            Usuario registro1 = new Usuario();
            ModelAndView mav = new ModelAndView("login");
            mav.addObject("registro", registro1);
            return mav;
        }
    }

    @RequestMapping(params = "action=cerrar")
    public ModelAndView logOut(HttpServletRequest request) {
        if (request.getSession() == null) {
            ModelAndView mav = new ModelAndView("index");
            return mav;
        } else {
            HttpSession sesion = request.getSession(false);
            sesion.removeAttribute("session_id");
            sesion.removeAttribute("cod_usu");
            sesion.removeAttribute("nombre");
            sesion.removeAttribute("descrip_rol");
            sesion.invalidate();
            ModelAndView mav = new ModelAndView("index");
            mav.addObject("sesion", sesion);
            return mav;
        }
    }
}
